package com.chb.docter.service;

import com.chb.docter.dto.*;
import com.chb.docter.params.CareOrderParam;
import com.hos.entity.his.CareHistory;
import com.hos.entity.his.CareOrder;
import com.hos.entity.his.CareOrderItem;
import com.hos.entity.his.Patient;
import com.hos.vo.Result;

import java.util.List;

/**
 * @author: 陈海彬
 * @date: Created in 2023/12/14 10:24
 * @description:
 * @modified By:
 * @version:
 */
public interface CareHistoryService {

    /**
     * 根据患者ID查询  患者信息 历史病例 患者档案信息
     *
     * @param patientId 患者id
     */
    Result<PatientAndCareHistoryDto> getPatientAllMessageByPatientId(String patientId);


    /**
     * 根据挂号id查找用户信息
     *
     * @param regId 挂号id
     */
    CareHistory getCareHistoryByRegId(String regId);


    /**
     * 保存病例
     *
     * @param careHistory 病例参数
     */
    CareHistory saveCareHistory(CareHistory careHistory);


    /**
     * 保存处方及详情信息
     *
     * @param careOrderParam 处方信息参数
     */
    void saveCareOrderItem(CareOrderParam careOrderParam);


    /**
     * 根据病例ID查询处方列表及详情
     *
     * @param chId 病例id
     */
    List<CareOrderDto> queryCareOrdersByChId(String chId);


    /**
     * 根据挂号单号完成就诊
     *
     * @param regId 挂单号
     */
    void visitComplete(String regId);


    /**
     * 根据处方详情ID删除处方详情【只能删除未支付的】
     *
     * @param itemId 处方详情id
     */
    void deleteCareOrderItemById(String itemId);

    /**
     * 获取订单详情
     *
     * @param chId 病例id
     */
    OrderDetailsDto getRegistrationListByChId(String chId);


    /**
     * 获取检查处方的列表父项
     */
    List<CareOrder> getCareOrderListByCoType();


    /**
     * 通过开诊明细的id查询明细信息
     *
     * @param itemId 开诊明细id
     */
    CheckOrderDetail getCheckOrderDetailsByItemId(String itemId);

     Patient getAppPatientToken() ;


    /**
     * 查询患者病例信息列表
     *
     * @param orderState 状态
     */
    List<CareHistoryDto> getCareHistoryListByStatus(String orderState);
}
